﻿#include "qwebengineviewplus.h"

QWebEngineViewPlus::QWebEngineViewPlus(QWidget *parent):
    QWebEngineView(parent)
{
    setAttribute(Qt::WA_DeleteOnClose);
    //当前端鼠标移动到连接上会触发这个信号,连接自定义槽函数将链接地址获取下来
    connect(this->page(), &QWebEnginePage::linkHovered, this, &QWebEngineViewPlus::slot_LinkHovered);
    //当加载新页面的icon时候会触发这个信号,这里刷新一遍显示icon
    connect(this,&QWebEngineViewPlus::iconChanged,[=](){
        this->window()->setWindowIcon(this->icon());
    });
    //当加载新页面的标题时候会触发这个信号,这里刷新一下标题
    connect(this,&QWebEngineViewPlus::titleChanged,[=](){
        this->window()->setWindowTitle(this->title());
    });
}

void QWebEngineViewPlus::slot_LinkHovered(const QString &url)
{
    //获取视图里面点击的链接地址
    url_ = url;
}

QWebEngineView  *QWebEngineViewPlus::createWindow(QWebEnginePage::WebWindowType type)
{
    /*注意若是创建一个新的界面显示一个新的网页则return 新创建的QWebEngineView(或者它的子类对象)对象,
     *若是在原来界面上显示新网页,则最后return 0;(不能使用return this,会导致程序崩溃)
    */

    //加载链接地址(创建一个新的界面显示一个新的网页)
//    QWebEngineViewPlus* new_QWebEngineViewPlus = new QWebEngineViewPlus();
//    new_QWebEngineViewPlus->load(this->url_);
//    new_QWebEngineViewPlus->show();
//    return new_QWebEngineViewPlus;
    //加载链接地址(不创建新的界面,显示新的网页),
    Q_UNUSED(type)
    //this->load(this->url_);
    this->setUrl(this->url_);
    return 0;
}
